Cytosim  PI
Cytoskeleton Simulator

Detailed Description

A Couple contains two pointers to Hand:

  • cHand1
  • cHand2

There are 4 possible states for a Couple:

  • state FF [0]: cHand1 and cHand2 are free,
  • state AF [1]: cHand1 is bound, cHand2 is free,
  • state FA [2]: cHand1 is free, cHand2 is bound,
  • state AA [3]: both hands are attached

The method state() return the state of the Couple in 0-3, but it is usually not necessary, since there are separate lists in CoupleSet.

Generally the Couple behaves according to its state:

  • FF : the Couple is diffusing and both Hands are trying to bind fibers,
  • AF, FA : the localization is given by the attachement point on the fiber,
  • AA : the Couple is acting as a Hookean spring between the two fibers.

The default Couple has:

  • a zero resting length (it uses Meca:interLink())
  • no specificity
Inheritance diagram for Couple:
Object HandMonitor Node Inventoried Movable Bridge CoupleLong Crosslink Fork Shackle CrosslinkLong ShackleLong

Public Member Functions

 Couple (CoupleProp const *, Vector const &w=Vector(0, 0, 0))
 create following the specifications in the CoupleProp
 
virtual ~Couple ()
 destructor
 
Coupleoperator= (Couple const &)
 copy operator
 
void setProperty (CoupleProp *)
 change the property and update the two Hands
 
void addConfinement (Meca &, const Hand *) const
 add confinement for give Hand if applicable
 
virtual void setInteractions (Meca &) const
 add interactions to the Meca
 
virtual void setInteractionsAF (Meca &) const
 add interactions to the Meca
 
virtual void setInteractionsFA (Meca &) const
 add interactions to the Meca
 
virtual Vector position () const
 the position of the complex, calculated from cPos, cHand1 and cHand2 More...
 
virtual bool translatable () const
 Couple can be displaced only if it is not attached.
 
virtual void translate (Vector const &w)
 translate object's position by the given vector
 
virtual void setPosition (Vector const &w)
 move object to specified position
 
virtual void foldPosition (const Modulo *s)
 modulo the current position vector in the space
 
void randomizePosition ()
 set the position randomly inside the confining Space
 
real stiffness () const
 stiffness of the link ( = prop->stiffness )
 
HandattachedHand () const
 return one Hand that is attached, or zero if both are detached
 
virtual Vector force1 () const
 force between hands, essentially: stiffness * ( cHand2->posHand() - cHand1->posHand() )
 
real cosAngle () const
 cosine of the angle between the two Fibers attached by the hands
 
virtual Vector posSide () const
 position on the side of fiber1 used for sideInteractions
 
Vector posFree () const
 the position of the complex if it is unattached
 
virtual void stepFF (const FiberGrid &)
 simulation step for a free Couple: diffusion
 
void stepAF (const FiberGrid &)
 simulation step for a Couple attached by Hand1
 
void stepFA (const FiberGrid &)
 simulation step for a Couple attached by Hand2
 
void stepAA ()
 simulation step for a Bridge Couple
 
Hand const * hand1 () const
 pointer to Hand1
 
bool attached1 () const
 true if Hand1 is attached
 
Vector pos1 () const
 position of Hand1 when attached (invalid call otherwise)
 
Fiberfiber1 () const
 Tubule to which Hand1 is attached, or zero if attached to another kind of Fiber.
 
void attachTo1 (Fiber *f, real ab, FiberEnd from)
 attach Hand1 at the given position
 
void attachToEnd1 (Fiber *f, FiberEnd end)
 attach Hand1 at the given end
 
void attach1 (FiberBinder &fb)
 attach Hand1 at the given FiberBinder
 
Hand const * hand2 () const
 pointer to Hand2
 
bool attached2 () const
 true if Hand2 is attached
 
Vector pos2 () const
 position of Hand2 when attached (invalid call otherwise)
 
Fiberfiber2 () const
 Tubule to which Hand2 is attached, or zero if attached to another kind of Fiber.
 
void attachTo2 (Fiber *f, real ab, FiberEnd from)
 attach Hand2 at the given position
 
void attachToEnd2 (Fiber *f, FiberEnd end)
 attach Hand2 at the given end
 
void attach2 (FiberBinder &fb)
 attach Hand2 at the given FiberBinder
 
Couplenext () const
 a static_cast<> of Node::next()
 
Coupleprev () const
 a static_cast<> of Node::prev()
 
Tag tag () const
 return unique character identifying the class
 
const Propertyproperty () const
 return Object Property
 
void write (OutputWrapper &) const
 write to file
 
void read (InputWrapper &, Simul &)
 read from file
 
- Public Member Functions inherited from Object
 Object ()
 constructor
 
std::string reference () const
 concatenation of [ tag(), property()->index(), number() ] in plain ascii More...
 
void writeReference (OutputWrapper &) const
 write a reference that identifies the Object uniquely More...
 
void writeReference (OutputWrapper &, Tag tag) const
 write a reference, but using the provided Tag More...
 
int mark () const
 birth mark value
 
void mark (int m)
 set birth mark
 
int fleck () const
 fleck value (not stored in trajectory files)
 
void fleck (int f) const
 set fleck (the value is not stored in trajectory files)
 
Objectnext () const
 extends Node::next(), with a cast to preserve type
 
Objectprev () const
 extends Node::prev(), with a cast to preserve type
 
- Public Member Functions inherited from Node
 Node ()
 constructor set as unlinked
 
virtual ~Node ()
 destructor More...
 
bool linked () const
 true if Node is linked
 
Nodenext () const
 the next Node in the list, or zero if this is last
 
Nodeprev () const
 the previous Node in the list, or zero if this is first
 
NodeListlist () const
 the list where the object is linked, or zero
 
ObjectSetobjset () const
 return associated ObjectSet
 
- Public Member Functions inherited from Inventoried
 Inventoried ()
 initialize (name=0)
 
 ~Inventoried ()
 destructor
 
void number (Number n)
 change the serial number
 
Number number () const
 serial number : a integer identifier, unique within each class
 
- Public Member Functions inherited from Movable
 Movable ()
 constructor
 
virtual ~Movable ()
 destructor
 
virtual bool rotatable () const
 true if object accepts rotations (default=false)
 
virtual void rotate (Rotation const &)
 rotate the object around the origin of coordinates More...
 
virtual void rotateP (Rotation const &)
 rotate the object around its current position More...
 

Public Attributes

HandcHand1
 first Hand
 
HandcHand2
 second Hand
 

Static Public Attributes

static const Tag TAG = 'c'
 a unique character identifying the class
 
- Static Public Attributes inherited from Object
static const Tag TAG = 'v'
 Object::TAG = 'v' represents the 'void' pointer.
 

Protected Member Functions

bool allowAttachment (const FiberBinder &)
 specialization of HandMonitor More...
 
void afterAttachment ()
 specialization of HandMonitor
 
void beforeDetachment ()
 specialization of HandMonitor
 
void afterDetachment ()
 specialization of HandMonitor
 
Number objNumber () const
 specialization of HandMonitor
 
HandotherHand (Hand *) const
 specialization of HandMonitor
 
Vector otherDirection (Hand *) const
 specialization of HandMonitor
 
real interactionLength () const
 specialization of HandMonitor
 

Protected Attributes

CoupleProp const * prop
 property
 
Vector cPos
 position and position in previous step of complex
 
- Protected Attributes inherited from Node
NodenNext
 the next Node in the list
 
NodenPrev
 the previous Node in the list
 
- Protected Attributes inherited from Inventoried
Number nNumber
 object identifier, unique within the class defined by tag()
 

Additional Inherited Members

- Static Public Member Functions inherited from Object
static std::string strReference (char, int, Number, int)
 build a string reference by concatenating (tag, property_index, number, mark) More...
 
static void readReference (InputWrapper &, int &, Number &, int &, char pretag)
 read a reference (property_index, number, mark) from input More...
 
static void writeNullReference (OutputWrapper &)
 write a reference that does not refer to any Object
 
- Static Public Member Functions inherited from Movable
static Vector readPrimitive (std::istream &, const Space *)
 read a position specified with primitives, such as 'circle 5', etc. More...
 
static Vector readPosition (std::istream &, const Space *)
 read a position in space More...
 
static Vector readDirection (std::istream &, const Vector &, const Space *)
 read an orientation, and return a normalized vector More...
 
static Rotation readRotation (std::istream &, const Vector &, const Space *)
 read a rotation specified in is, at position pos More...
 

Member Function Documentation

bool allowAttachment ( const FiberBinder fb)
protectedvirtual

If ( prop->stiff == true ): Check if binding is directly adjacent to the place where the other Hand of the complex is already attached. Such 'degenerate' link are allowed if the parameter prop->stiff is false. They cannot produce forces but change the cooperativity of Couple binding.

Reimplemented from HandMonitor.

Reimplemented in Bridge, and Crosslink.

Vector position ( ) const
virtual

The position is:

  • cPos if the Couple is free,
  • the position of the attached Hand if only one is attached
  • the average position of the two hands if they are both attached

Reimplemented from Movable.